#include <iostream>
#include <Map.hpp>
#include <RGB.hpp>

#ifndef _CLASSMODELINGMATERIAL_
#define _CLASSMODELINGMATERIAL_

namespace Modeling {

class Material
{
public:
	virtual ~Material();
	Material(std::string name);

	std::string getName();
	void setName(std::string name);

	Modeling::RGBf* getAmbient();
	void setAmbient(Modeling::RGBf ambient);

	Modeling::RGBf* getDiffuse();
	void setDiffuse(Modeling::RGBf diffuse);

	Modeling::RGBf* getSpecular();
	void setSpecular(Modeling::RGBf specular);

	float getShininess();
	void setShininess(float shininess);

	virtual Modeling::Map* getDiffuseMap();
	virtual Modeling::Map* enableDiffuseMap();
	bool isDiffuseMapEnabled();

protected:
	std::string name;
	Modeling::RGBf ambient;
	Modeling::RGBf diffuse;
	Modeling::RGBf specular;

	float shininess;

	Modeling::Map* diffuseMap;
};

}// namespace Modeling

#endif
